/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.ranch.dao;

import java.util.List;

import org.ranch.api.service.AnimalSearchParameters;
import org.ranch.model.Animal;

/**
 * A Data access interface that provides methods for performing CRUD operations
 * on the {@link Animal} objects <br/>
 * <br/>
 *
 * The AnimalDAO interface abstracts the application from a particular
 * implementation of the CRUD operations on the entities
 *
 *
 */
public interface AnimalDAO extends BaseDAO<Animal>{

    /**
     * @param query
     * @param kraalIds
     * @return
     */
    List<Animal> searchAnimalByTagNo(String query, String kraalIds);

    /**
     * @param params
     * @param pageNo
     * @param maxNumPageRecord
     * @return
     */
    List<Animal> searchWithParams(AnimalSearchParameters params, Integer pageNo,
	    int maxNumPageRecord);

    /**
     * @param params
     * @return
     */
    long numberOfAnimalWithSearchParams(AnimalSearchParameters params);

    /**
     * @param params
     * @return
     */
    List<Animal> searchWithParams(AnimalSearchParameters params);

}
